package model

import (
	"go-web/initdb"

	"github.com/jinzhu/gorm"
)

// User 表
type User struct {
	gorm.Model
	Username string `json:"username"`
	Password string `json:"password"`
	Roles    []Role `json:"role" gorm:"many2many:role"`
}

func init() {
	if !initdb.Db.HasTable(User{}) {
		initdb.Db.CreateTable(User{})
	}
}

// TableName 表名
func (user User) TableName() string {
	return "user"
}

// QueryByUserName 根据 userName 查找 user
func (user User) QueryByUserName() User {
	// initdb.Db.First(&user, user.Username)
	// return user

	// tips: 根据 username 查找 User, 此时 user.ID 需要主键为空， 返回结果是新的实例，不会影响到当前的查找主体
	initdb.Db.First(&user, "username = ?", user.Username)
	return user

	// var res User
	// initdb.Db.First(&res, "username = ?", user.Username)
	// return res
}

// Insert 添加用户
func (user User) Insert() bool {
	initdb.Db.Create(&user)

	if initdb.Db.Error == nil {
		return true
	}

	return false
}
